#!/bin/bash

# Ubuntu 快速部署脚本
# 使用方法: ./deploy-ubuntu-fast.sh [服务器IP] [用户名]

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

# 检查参数
if [ $# -lt 2 ]; then
    echo -e "${RED}使用方法: $0 <服务器IP> <用户名>${NC}"
    echo "示例: $0 123.456.789.123 ubuntu"
    exit 1
fi

SERVER_IP=$1
USERNAME=$2
PROJECT_NAME="nestjs-redis-websocket"

echo -e "${GREEN}🚀 开始快速 Ubuntu 部署...${NC}"
echo "服务器IP: $SERVER_IP"
echo "用户名: $USERNAME"

# 上传项目文件
echo -e "${YELLOW}📤 上传项目文件...${NC}"
ssh $USERNAME@$SERVER_IP "mkdir -p ~/$PROJECT_NAME"
rsync -avz --exclude='node_modules' --exclude='.git' --exclude='dist' --exclude='build' \
    ./ $USERNAME@$SERVER_IP:~/$PROJECT_NAME/

# 在服务器上执行快速部署
echo -e "${YELLOW}🔧 执行快速部署...${NC}"
ssh $USERNAME@$SERVER_IP << 'EOF'
    cd ~/nestjs-redis-websocket
    
    # 快速安装 Docker（如果未安装）
    if ! command -v docker &> /dev/null; then
        echo "安装 Docker..."
        curl -fsSL https://get.docker.com -o get-docker.sh
        sudo sh get-docker.sh
        sudo usermod -aG docker $USER
        newgrp docker
    fi
    
    # 快速安装 Docker Compose（如果未安装）
    if ! command -v docker-compose &> /dev/null; then
        echo "安装 Docker Compose..."
        sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        sudo chmod +x /usr/local/bin/docker-compose
        # 验证安装
        docker-compose --version
    fi
    
    # 创建快速环境变量文件
    if [ ! -f .env ]; then
        cat > .env << 'ENVEOF'
# 快速配置 - 请修改密码
MYSQL_ROOT_PASSWORD=password123
MYSQL_DATABASE=nestjs_redis_websocket_prod
MYSQL_USER=nestjs
MYSQL_PASSWORD=nestjs123
REDIS_PASSWORD=redis123
JWT_SECRET=your-jwt-secret-key-123
NODE_ENV=production
PORT=3000
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_DB=nestjs_redis_websocket_prod
REDIS_HOST=redis
REDIS_PORT=6379
JWT_EXPIRES_IN=24h
CORS_ORIGIN=http://localhost:3001,http://127.0.0.1:3001
UPLOAD_PATH=uploads
UPLOAD_MAX_SIZE=5242880
LOG_LEVEL=info
ENVEOF
    fi
    
    # 创建必要目录
    mkdir -p nginx/ssl mysql/init
    
    # 停止现有服务
    docker-compose down 2>/dev/null || true
    
    # 快速构建并启动
    echo "构建并启动服务..."
    docker-compose build --no-cache
    docker-compose up -d
    
    # 等待服务启动
    echo "等待服务启动..."
    sleep 20
    
    # 检查服务状态
    docker-compose ps
    
    echo ""
    echo "🎉 快速部署完成！"
    echo "📋 访问地址: http://$(curl -s ifconfig.me)"
    echo "📝 查看日志: docker-compose logs -f"
EOF

echo -e "${GREEN}✅ 快速部署完成！${NC}"
echo -e "${YELLOW}📋 访问地址: http://$SERVER_IP${NC}"
echo -e "${YELLOW}📝 查看日志: ssh $USERNAME@$SERVER_IP 'cd ~/$PROJECT_NAME && docker-compose logs -f'${NC}" 